home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / sources / OSEmu / crazycars3slave.asm next >
Assembly Source File  |  2000-04-12  |  4KB  |  164 lines

  1. ;*---------------------------------------------------------------------------
  2. ;  :Program.    crazycars3slave.asm
  3. ;  :Contents.    Slave for "Crazy Cars 3"
  4. ;  :Author.    Harry
  5. ;  :History.    26.09.1998/08.10.1998/ example-rework 11.10.1998
  6. ;  :Requires.    whdload-package :)
  7. ;  :Copyright.    Freeware
  8. ;  :Language.    68000 Assembler
  9. ;  :Translator.    ASM-One 1.25
  10. ;  :To Do.
  11. ;---------------------------------------------------------------------------*
  12.  
  13.     IFND BARFLY
  14.  
  15.     INCDIR    asm-one:Include2.0/
  16.     INCLUDE LIBRARIES/DOS_LIB.I
  17.     INCLUDE    LIBRARIES/DOS.I
  18.     INCLUDE EXEC/EXEC_LIB.I
  19.     INCLUDE    EXEC/MEMORY.I
  20.     INCLUDE    GRAPHICS/GRAPHICS_LIB.I
  21.     INCLUDE INTUITION/INTUITION_LIB.I
  22.     INCLUDE INTUITION/INTUITION.I
  23.     INCLUDE    OWN/CCRMAKRO
  24.     INCLUDE    own/whdload.i
  25.     
  26.     ELSE
  27.  
  28.         INCDIR    Includes:
  29.         INCLUDE    lvo/dos.i
  30.         INCLUDE    lvo/exec.i
  31.         INCLUDE    whdload.i
  32.  
  33.         BOPT    O+ OG+            ;enable optimizing
  34.         BOPT    ODd- ODe-        ;disable mul optimizing
  35.         BOPT    w4-            ;disable 64k warnings
  36.         SUPER                ;disable supervisor warnings
  37.  
  38.         OUTPUT    wart:a-c/anotherworld/anotherworld.slave
  39.     ENDC
  40.  
  41. ;======================================================================
  42.  
  43. SLBASE        SLAVE_HEADER        ;ws_Security + ws_ID
  44.         dc.w    7        ;ws_Version
  45.         dc.w    WHDLF_Disk!WHDLF_NoError!WHDLF_EmulTrap    ;ws_flags
  46.         dc.l    $D0000        ;ws_BaseMemSize    
  47.         dc.l    $00        ;ws_ExecInstall
  48.         dc.w    SLStart-SLBASE    ;ws_GameLoader
  49.         dc.w    CCDIR-SLBASE    ;ws_CurrentDir
  50.         dc.w    0        ;ws_DontCache
  51.          dc.b    $00        ;debugkey
  52. qkey        dc.b    $5D        ;quitkey
  53.  
  54. CCDIR    DC.B    'ccdat',0
  55.     EVEN
  56.  
  57. ;======================================================================
  58.  
  59. ;    DOSCMD    "WDate >T:date"
  60.         dc.b    "$VER: Crazy_Cars_3_Slave_2.02"
  61. ;    INCBIN    "T:date"
  62.         dc.b    0
  63.         even
  64.  
  65. ;======================================================================
  66. SLStart    ;    A0 = resident loader
  67. ;======================================================================
  68.  
  69.         lea    _RESLOAD(PC),a1
  70.         move.l    a0,(a1)            ;save for later using
  71.  
  72.         move.l    #CACRF_EnableI,d0    ;enable instruction cache
  73.         move.l    d0,d1            ;mask
  74.         jsr    (resload_SetCACR,a0)
  75.  
  76.                     ;LOAD EMUMODULE
  77.     LEA.L    $400.W,A1        ;ADDY
  78.     LEA.L    OSMNAME(PC),A0        ;FILENAME
  79.     move.l    _RESLOAD(PC),a2
  80.     jsr    (resload_LoadFileDecrunch,a2)
  81.  
  82.  
  83.     MOVE.L    _RESLOAD(PC),A0        ;INIT EMU
  84.     LEA.L    SLBASE(PC),A1
  85.     JSR    $400.W
  86.  
  87.     MOVE.L    4.W,A6
  88.     BCLR    #4,$129(A6)        ;ELSE CC3'S RUNTIMESYSTEM FAILS
  89.                     ;ON 68060
  90.  
  91.     MOVE.W    #0,SR
  92.  
  93.     MOVE.L    #$400,D0        ;ELSE THE OSEMU ALLOCATES MEM
  94.     MOVEQ.L    #MEMF_CHIP,D1        ;AT THE END AND COMES INTO
  95.     MOVE.L    $4.W,A6            ;CC3'S UNALLOCATED AREA *GRRRR*
  96.     JSR    _LVOAllocMem(A6)    ;SO WE ALLOCATE A BIT MEM, LOAD
  97.     MOVE.L    D0,-(A7)        ;THE EXE AND FREE THAT BIT MEM
  98.  
  99.     MOVE.L    $4.W,A6            ;OPEN DOSLIB FOR USE (THE EMU
  100.     MOVEQ.L    #0,D0            ;PROVIDES THE FUNCTIONS)
  101.     LEA    DOSNAM(PC),A1
  102.     JSR    _LVOOpenLibrary(A6)
  103.     LEA.L    DOSP(PC),a4
  104.     MOVE.L    d0,(a4)
  105.     MOVE.L    D0,A6
  106.  
  107.     LEA.L    INTROFILE(PC),A0    ;LOAD INTROEXECUTABLE
  108.     MOVE.L    A0,D1
  109.     JSR    _LVOLoadSeg(A6)
  110.     LEA.L    PRGP(PC),A4        ;STORE POINTER FOR FREEING
  111.     MOVE.L    D0,(A4)
  112.     LSL.L    #2,D0
  113.     MOVE.L    D0,A1
  114.     ADDQ.L    #4,A1
  115.  
  116.     MOVE.L    A1,-(A7)
  117.     MOVE.L    4(A7),A1        ;FREE STARTMEM TO FRAGMENT MEMORY
  118.     MOVE.L    #$400,D0        ;THAT MEMORYTHING IS ONLY NEEDED
  119.     MOVE.L    $4.W,A6            ;FOR CRAZY CARS 3 ITSELF AND MAY
  120.     JSR    _LVOFreeMem(A6)        ;BE OMITTED IN OTHER SLAVES
  121.  
  122.     MOVE.L    (A7)+,A1
  123.     ADDQ.L    #4,A7
  124.  
  125.     SUB.L    A0,A0            ;NO POINTER ON ARGUMENTLINE
  126.     MOVEQ.L    #0,D0            ;ARGUMENTLINE HAS LEN 0
  127.  
  128.     JSR    (A1)            ;CALL EXE
  129.  
  130.     MOVE.L    DOSP(PC),A6        ;INTRO FINISHED, THROW EXE OUT
  131.     MOVE.L    PRGP(PC),D1
  132.     JSR    _LVOUnloadSeg(A6)
  133.  
  134.     LEA.L    MAINFILE(PC),A0        ;LOAD MAIN GAME
  135.     MOVE.L    A0,D1
  136.     JSR    _LVOLoadSeg(A6)
  137.                     ;NO NEED TO STORE POINTER FOR LATER USE
  138.     LSL.L    #2,D0
  139.     MOVE.L    D0,A1
  140.     ADDQ.L    #4,A1
  141.  
  142.     SUB.L    A0,A0
  143.     MOVEQ.L    #0,D0
  144.  
  145.     MOVEQ.L    #0,D5            ;else gfx is destroyed
  146.     and.b    #$fd,$bfe001        ;set filter in right state (ON)
  147.  
  148.     JSR    (A1)            ;CALL EXE
  149.  
  150.     ILLEGAL                ;SHOULD NEVER BE REACHED
  151.  
  152. ;version    dc.w    0    ;version of disks
  153. _RESLOAD    dc.l    0    ;address of resident loader
  154. OSMNAME    DC.B    'OSEMUMODULE400.BIN',0
  155.     EVEN
  156. INTROFILE    DC.B    'anim',0
  157.     EVEN
  158. MAINFILE    DC.B    'cciii',0
  159.     EVEN
  160. DOSNAM    DC.B    'dos.library',0
  161.     EVEN
  162. PRGP    DC.L    0
  163. DOSP    DC.L    0
  164.